Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

354
Visualizações
reactjs - instantánea de broma que prueba los componentes "conectados" de redux anidados

Cuando se prueba una instantánea (instantánea de broma) de un componente que está conectado a la tienda redux, puedo exportar el componente real además del componente conectado

 // User.js /* ... */ export class User extends React.Component {/* ... */} /* ... */ export default connect(mapStateToProps)(User);

En el archivo de prueba, puedo importar el componente real (no la versión conectada) y realizar pruebas instantáneas en él.

 // User.spec.js import { User } from './User'; /* ... toMatchSnapshot() testing */

Pero me encuentro con problemas cuando un componente conectado está anidado dentro de otro componente conectado. Por ejemplo, supongamos que el componente de User está anidado dentro de otro componente conectado:

 // Wrapper.js import User from './User'; // importing the connected version /* ... */ export class Wrapper extends React.Component { /* ... */ render() { return ( <div> /* ... */ <User /> </div> ); } } export default connect(mapStateToProps)(Wrapper);

Cuando ejecuto la prueba de instantánea en Wrapper de la misma manera que lo hice en User , aparece el siguiente error:

 Invariant Violation: Could not find "store" in either the context or props of "Connect(User)". Either wrap the root component in a <Provider>, or explicitly pass "store" as a prop to "Connect(User)".`

¿Hay alguna forma de renderizar superficialmente cuando se toman instantáneas? ¿O estoy haciendo algo mal?

over 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

En este caso, la mejor manera es probar el Wrapper solo burlándose del User

 import Wrapper from './Wrapper' jest.mock('./User', () => 'User') // note that the path to user is relative the test file not to the Wrapper.js file.

Esto reemplazará al User con un componente simple con el nombre User .

over 4 years ago · Santiago Trujillo Relatório

0

Solo un pequeño ajuste a la respuesta proporcionada por @ andreas-köberle, ya que puede producir el error: using incorrect casing. Use PascalCase for React components, or lowercase for HTML elements

Para solucionarlo, si desea simular un componente, debe devolver un fn. El ejemplo refleja la denominación de varias palabras:

jest.mock('./User', () => () => 'UserThingStuff')

o para devolver un elemento HTML:

jest.mock('./User', () => 'user-thing-stuff')

over 4 years ago · Santiago Trujillo Relatório

0

Puede agregar una tienda simulada y luego probar el componente sin conexión, pero con componentes de conexión anidados ↓

Componente sin conexión, pero incluye elementos conectados anidados ->

pruebe con la tienda simulada, qué estado puede configurar.↓ antes de la prueba: npm install redux-mock-store --save-dev

prueba.js ↓

 import configureStore from "redux-mock-store"; import {Provider} from "react-redux"; //create mockStore let mockStore; //create Obj for config store const mockStoreConf = configureStore([]); //configure store (add states) mockStore = mockStoreConf({ someStateInMockStore: `SomeValueFromMockKetInMockStore`, }); const tree = renderer.create( <Provider store={mockStore}> <Component /> </Provider> ); expect(tree).toMatchSnapshot();

Ahora los hijos conectados anidados de su Componente toman el estado de su mockStore. Simplemente agregue los estados necesarios en el paso de configuración (//configure store (agregar estados)).

información de https://www.robinwieruch.de/react-connected-component-test

over 4 years ago · Santiago Trujillo Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda